﻿using System;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using System.Web.UI;
using System.Web.UI.WebControls;
using TTQT;
using TTQT.TTQT_Code;
using MyWebUtils;
using TTQT.TTQT_Code.Info;

public partial class XemNhanhTonKho : MasterControl//System.Web.UI.UserControl
{
    //private void bindAnChi()
    //{
    //    dsMaAnChi.SelectCommandType = SqlDataSourceCommandType.Text;
    //    dsMaAnChi.SelectCommand =
    //        "select distinct Ma,tenanchi+ case(AnChiMau) when 1 then N' (mẫu)' when 0 then '' end [TenAnChi] from maanchi where MaDotPhatHanh=" +
    //        cboDotPhatHanh.SelectedValue;
    //    cboMaAnChi.DataSource = ((DataView)dsMaAnChi.Select(new DataSourceSelectArguments())).ToTable();
    //    cboMaAnChi.DataBind();
    //}
    private void bindDetail()
    {
        dsDetail.SelectCommandType = SqlDataSourceCommandType.Text;
        dsDetail.SelectCommand = @"select k.id,k.Seri,k.NgayNhap,k.NhomHangId,k.MaCN,k.TenHang,k.PicUrl,k.GhiChu,k.MaVach,k.GiaNhap,k.GiaBanThamKhao,
k.ChietKhau*K.GiaBanThamKhao as ChietKhau,k.GiaBanThucTe,k.SoLuong,k.UserName,k.Del,case when N.GioiTinh=0 then N'Hàng của nữ' else N'Hàng của nam' end as GioiTinh,N.TenNhom
from KhoHang k inner join NhomHang N on k.MaNhom=N.MaNhom where k.MaCN='" + UserInfo.Brn_Code + "' and k.MaCN=N.MaCN and del=0 and k.DaBan=0";
        if (!cboGioiTinhLoc.SelectedValue.Equals("-1"))
        {
            dsDetail.SelectCommand += " and N.GioiTinh=" + cboGioiTinhLoc.SelectedValue;
        }
        if (!cboNhomHangLoc.SelectedValue.Equals(""))
        {
            dsDetail.SelectCommand += " and N.MaNhom='" + cboNhomHangLoc.SelectedValue+"'";
        }
        detailGrid.DataSourceID = "dsDetail";
        detailGrid.DataBind();
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            txtGiaNhap.Attributes.Add("onkeyup", "formatTien(" + txtGiaNhap.ClientID + ");");
            txtGiaNhap.Attributes.Add("ondblclick", "selectText(this)");

            txtGiaBan.Attributes.Add("onkeyup", "formatTien(" + txtGiaBan.ClientID + ");");
            txtGiaBan.Attributes.Add("ondblclick", "selectText(this)");

            txtNgayNhap.Attributes.Add("onkeyup", "formatDateInput(this)");
            txtNgayNhap.Attributes.Add("ondblclick", "selectText(this)");

            cboNhomHang.DataBind();
            
            bindDetail();
            hienPanel(false, false, true, false);
        }
    }
    private void hienPanel(bool gridMaster, bool editMaster, bool gridDetail, bool editDetail)
    {
        pnGridMaster.Visible = gridMaster;
        pnEditMaster.Visible = editMaster;
        pnGridDetail.Visible = gridDetail;
        pnEditDetail.Visible = editDetail;
    }


    protected void detailGrid_ItemCommand(object source, DataGridCommandEventArgs e)
    {
        MyWebUtil.goToElement(Page, "chiTietHoaDon");
        try
        {

            if (e.CommandName == "cmdDelete")
            {
                ds.DeleteCommandType = SqlDataSourceCommandType.Text;
                ds.DeleteCommand = "Delete KhoHang where id=" + e.Item.Cells[0].Text;
                int kq = ds.Delete();
                bindDetail();
                hienPanel(false, false, true, false);
                #region GhiLog
                LogInfo logInfo = new LogInfo();
                logInfo.Brn_Code = UserInfo.Brn_Code;
                logInfo.Content = "Xóa hàng mã " + e.Item.Cells[1].Text + "," + e.Item.Cells[4].Text + ", giá " + e.Item.Cells[5].Text;
                logInfo.Ip = Request.UserHostAddress;
                logInfo.UserName = UserInfo.userName;
                logInfo.Type = TTQTCommon.logXoaKhaiBaoDauKy;
                DataAccessObject.instance().addLog(logInfo);
                #endregion
            }
        }
        catch (SqlException ex)
        {
        }
    }
    protected void detailGrid_ItemDataBound(object sender, DataGridItemEventArgs e)
    {
        if (e.Item.ItemIndex < 0) return;
        Button cmdDel = (Button)e.Item.FindControl("cmdDelete");
        if (cmdDel != null) cmdDel.Attributes.Add("onclick", TTQTCommon.delete_Confirm);
        try
        {
            if (e.Item.Cells[3].Text.Equals("1"))
            {
                e.Item.CssClass = "DarkRow";
                cmdDel.Enabled = false;
            }
            else
            {
                e.Item.CssClass = "LightRow";
            }
        }
        catch { }

    }
    protected void detailGrid_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
    {
        detailGrid.CurrentPageIndex = e.NewPageIndex;
        bindDetail();
    }
    protected void cmdAddNewMaster_Click(object sender, EventArgs e)
    {
        hienPanel(false, true, false, false);

    }
    protected void cmdExitEditMaster_Click(object sender, EventArgs e)
    {
        hienPanel(true, false, false, false);
    }


    protected void cmdAddDetail_Click(object sender, EventArgs e)
    {
        hienPanel(false, true, true, true);
        MyWebUtils.MyWebUtil.goToElement(Page, "chiTietHoaDon");
    }

    protected void cboMaAnChi_SelectedIndexChanged(object sender, EventArgs e)
    {
        try
        {
            MyWebUtil.goToElement(Page, "chiTietHoaDon");
            ds.SelectCommandType = SqlDataSourceCommandType.Text;
            ds.SelectCommand = "select * from MaAnChi where ma=" + cboNhomHang.SelectedValue;
            DataTable t = ((DataView)ds.Select(new DataSourceSelectArguments())).ToTable();
            txtGiaNhap.Text = t.Rows[0]["DonGia"].ToString();
            //txtTinhChatAnChi.Text = t.Rows[0]["AnChiThuong"].ToString().Equals("True") ? "1" : "0";
        }
        catch (Exception exxx) { }
    }
    private bool kiemTraLoiNhapDetail()
    {
        // Kiểm tra lỗi nhập trên phần Detail
        decimal giaNhap, giaBan;
        try
        {
            DateTime d = Convert.ToDateTime(txtNgayNhap.Value);
        }
        catch
        {
            MyWebUtils.MyWebUtil.alert(Page, "Ngày nhập sai định dạng");
            return false;
        }
        if (txtTenHang.Text.Trim().Length < 1)
        {
            MyWebUtil.alert(Page, "Chua nhap ten hang");
            return false;
        }

        if (txtSeri.Text.Trim().Length < 1)
        {
            MyWebUtil.alert(Page, "Chua chon Seri");
            return false;
        }
        // giá nhập
        if (txtGiaNhap.Text.Trim().Length < 1)
        {
            MyWebUtil.alert(Page, "Chua nhap gia nhap");
            return false;
        }
        try
        {
            giaNhap = Convert.ToDecimal(txtGiaNhap.Text.Replace(",", ""));
            if (giaNhap < 0)
            {
                MyWebUtil.alert(Page, "Gia nhap khong hop le");
                return false;
            }
        }
        catch
        {
            MyWebUtil.alert(Page, "Gia nhap khong hop le");
            return false;
        }
        // giá ban
        if (txtGiaBan.Text.Trim().Length < 1)
        {
            MyWebUtil.alert(Page, "Chua nhap gia ban");
            return false;
        }
        try
        {
            giaBan = Convert.ToDecimal(txtGiaBan.Text.Replace(",", ""));
            if (giaBan < 0)
            {
                MyWebUtil.alert(Page, "Gia ban khong hop le");
                return false;
            }
        }
        catch
        {
            MyWebUtil.alert(Page, "Gia ban khong hop le");
            return false;
        }

        //Xong phần kiểm tra lỗi nhập thông tin Detail
        #region Kiểm tra xem có bị trùng seri không.

        //Kiểm tra trạng thái trong database. Chỗ này phức tạp nhất
        //Mô tả quá trình tìm kiếm:
        ///Phải kiêm tra 2 trường hợp: Mã ấy có tồn tại không? Và ấn chỉ ấy có đúng là trạng thái = 1 không? Nếu không thỏa cả 2 điều kiện trên thì báo lỗi và dừng lại.
        /*  */
        SqlConnection conn = new SqlConnection(TTQTCommon.DBConnectionString);
        SqlCommand comm = new SqlCommand();
        comm.Connection = conn;
        comm.CommandType = CommandType.StoredProcedure;
        comm.CommandText = "KhoHang_KiemTraTonTaiSeri";
        bool isExist = false;
        try
        {
            conn.Open();

            comm.Parameters.Clear();
            //Kiểm tra trung bảng khoanchi_khaibaodauky
            comm.Parameters.AddWithValue("@Seri", txtSeri.Text);
            string s = Convert.ToString(comm.ExecuteScalar());
            if (s != "0") isExist = true;
            if (isExist)
            {
                MyWebUtil.alert(Page, "Seri này đã được gán cho một sản phẩm trong kho. Hãy sử dụng seri khác!");
                return false;
            }
            //MyWebUtils.MyWebUtil.alert(Page, "Kết quả là: " + ketQua);
            conn.Close();
            comm.Dispose();

        }
        catch (Exception ex)
        {
            MyWebUtils.MyWebUtil.alert(Page, "Co loi khi kiem tra trung seri!");
            return false;
        }
        #endregion

        return true;
    }
    private void insertDetail()
    {
        SqlConnection conn = new SqlConnection(TTQTCommon.DBConnectionString);
        SqlCommand comm = new SqlCommand();
        SqlTransaction tran = null;
        try
        {
            conn.Open();
            tran = conn.BeginTransaction();
            comm.Connection = conn;
            comm.Transaction = tran;
            comm.CommandText = "KhoHang_KhaiBaoDauKy_Insert";
            comm.CommandType = CommandType.StoredProcedure;
            comm.Parameters.Clear();

            comm.Parameters.AddWithValue("@Seri", txtSeri.Text.ToUpper());
            comm.Parameters.AddWithValue("@NgayNhap", TTQTCommon.convertDateString(txtNgayNhap.Value));
            comm.Parameters.AddWithValue("@NhomHangId", cboNhomHang.SelectedValue);
            comm.Parameters.AddWithValue("@MaCN", UserInfo.Brn_Code);
            comm.Parameters.AddWithValue("@TenHang", txtTenHang.Text);
            comm.Parameters.AddWithValue("@GhiChu", txtGhiChu.Text);
            comm.Parameters.AddWithValue("@MaVach", txtMaVach.Text);
            comm.Parameters.AddWithValue("@GiaNhap", txtGiaNhap.Text.Replace(",", ""));
            comm.Parameters.AddWithValue("@GiaBanThamKhao", txtGiaBan.Text.Replace(",", ""));
            comm.Parameters.AddWithValue("@UserName", this.UserInfo.userName);



            int maDetail = TTQTCommon.ToInt32(comm.ExecuteScalar(), 0);
            if (maDetail > 0)
            {
                //txtNgayNhap.Value = "";
                //txtTenHang.Text = "";
                //txtGhiChu.Text = "";
                hienPanel(false, true, true, false);
            }
            comm.Transaction.Commit();
            detailGrid.DataBind();
            tran.Dispose();
            conn.Dispose();
        }
        catch (Exception loi)
        {
            //close connection
            comm.Transaction.Rollback();
        }
    }

    protected void cmdCapNhatDetail_Click(object sender, EventArgs e)
    {
        MyWebUtil.goToElement(Page, "chiTietHoaDon");
        if (!kiemTraLoiNhapDetail()) return;
        // Nếu đang ở chế độ thêm mới detail Sử dụng transaction để insert Detail và đổi trạng thái các ấn chỉ trong bảng KhoAnChi
        insertDetail();
        bindDetail();
        hienPanel(false, false, true, false);
    }
    protected void cmdHuyBoDetail_Click(object sender, EventArgs e)
    {
        //bindDetail();
        MyWebUtils.MyWebUtil.goToElement(Page, "chiTietHoaDon");
        hienPanel(false, false, true, false);
    }
    protected void cboGioiTinh_SelectedIndexChanged(object sender, EventArgs e)
    {
        cboNhomHang.DataSourceID = "dsNhomHang";
        cboNhomHang.DataBind();
    }
    protected void cboGioiTinhLoc_SelectedIndexChanged(object sender, EventArgs e)
    {
        cboNhomHangLoc.DataSourceID = "dsNhomHangLoc";
        cboNhomHangLoc.DataBind();
        bindDetail();
        try
        {
            cboGioiTinh.SelectedValue = cboGioiTinhLoc.SelectedValue;
        }
        catch (Exception)
        {

        }
    }
    protected void cboNhomHangLoc_SelectedIndexChanged(object sender, EventArgs e)
    {
        bindDetail();
        try
        {
            cboNhomHang.SelectedValue = cboNhomHangLoc.SelectedValue;
        }
        catch (Exception)
        {

        }
    }
}
